$(function() {
	// Waves初始化
	// Waves.displayEffect();
	// 数据表格动态高度
	$(window).resize(function () {
		$('#table').bootstrapTable('resetView', {
			height: getHeight()
		});
	});
	// // 设置input特效
	// $(document).on('focus', 'input[type="text"]', function() {
	// 	$(this).parent().find('label').addClass('active');
	// }).on('blur', 'input[type="text"]', function() {
	// 	if ($(this).val() == '') {
	// 		$(this).parent().find('label').removeClass('active');
	// 	}
	// });
	// select2初始化
	// $('select').select2();
});
// 动态高度
function getHeight() {
	return $(window).height() - 20;
}
// 动态高度
function getNoHeadHeight(headHeight) {
	return $(window).height() - 20 - headHeight;
}
//打开窗口
function openDialog(url,title,readyCallBack,columnClass){
	return $.dialog({
		animationSpeed: 300,
		columnClass: columnClass?columnClass:'col-md-10 col-md-offset-1',
		title: title,
		content: url,
		onContentReady: function () {
			if(readyCallBack)
				readyCallBack();
		}
	});
}

function confirmDialog(content,yesCallback){
	return $.confirm({
		type: 'red',
		animationSpeed: 300,
		title: "提示",
		content: content,
		buttons: {
			confirm: {
				text: '确认',
				btnClass: 'waves-effect waves-button',
				action: function () {
					if(yesCallback){
						yesCallback();
					}
				}
			},
			cancel: {
				text: '取消',
				btnClass: 'waves-effect waves-button'
			}
		}
	});
}
function confirmYesnoDialog(content,yesCallback){
    return $.confirm({
        type: 'red',
        animationSpeed: 300,
        title: "提示",
        content: content,
        buttons: {
            confirm: {
                text: '是',
                btnClass: 'waves-effect waves-button',
                action: function () {
                    if(yesCallback){
                        yesCallback();
                    }
                }
            },
            cancel: {
                text: '否',
                btnClass: 'waves-effect waves-button'
            }
        }
    });
}
//提示窗口
function infoDialog(msg){
	$.confirm({
		theme: 'dark',
		animation: 'rotateX',
		closeAnimation: 'rotateX',
		title: false,
		content: msg,
		buttons: {
			confirm: {
				text: '确认',
				btnClass: 'waves-effect waves-button waves-light'
			}
		}
	});
}

/**
 *切割表单序列化数据，空值不填入
 */
function splitFormSerializeValue(id,params){
	var reg = /([^&=]+)=([^&]*)/g, //正则
		m;
	while (m = reg.exec($('#'+id).serialize())) {
		if(m[2]){
			params[m[1]] = m[2];
		}
	}
	return params;
}

// 数据表格long类型日期格式化
function detailLongDateTimeFormatter(value, row, index){
    if(value)
        return getSmpFormatDateByLong(value);
    return "";
}
// 数据表格long类型日期格式化
function detailLongDateFormatter(value, row, index){
   if(value)
    	return getSmpFormatDateByLong(value,false);
   return "";
}
// 数据表格展开内容
function detailFormatter(index, row) {
	var html = [];
	$.each(row, function (key, value) {
		html.push('<p><b>' + key + ':</b> ' + value + '</p>');
	});
	return html.join('');
}
// 初始化input特效
function initMaterialInput() {
	$('form input[type="text"]').each(function () {
		if ($(this).val() != '') {
			$(this).parent().find('label').addClass('active');
		}
	});
}

// jQuery.validator.addMethod("double",function(value, element){
//     var returnVal = true;
//     inputZ=value;
//     var ArrMen= inputZ.split(".");
//     if(ArrMen.length==2){
//         if(ArrMen[1].length>2){
//             returnVal = false;
//             return false;
//         }
//     }
//     var vzNum=parseFloat(inputZ).toFixed(2);
//     // alert(vzNum);
//     if(isNaN(vzNum)){
//         returnVal = false;
//         return false;
//     }
//
//     var ele= parseFloat('999999999.99');
//
//     if(ele<parseFloat(vzNum)){
//         returnVal = false;
//         return false;
//     }
//     // } for end
//     return returnVal;
// },"请填写前面9位数字，小数为2位的金额");


// 对Date的扩展，将 Date 转化为指定格式的String
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符，
// 年(y)可以用 1-4 个占位符，毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
// 例子：
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
// (new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18
Date.prototype.format = function(fmt)
{ //author: meizz
    var o = {
        "M+" : this.getMonth()+1,                 //月份
        "d+" : this.getDate(),                    //日
        "h+" : this.getHours(),                   //小时
        "m+" : this.getMinutes(),                 //分
        "s+" : this.getSeconds(),                 //秒
        "q+" : Math.floor((this.getMonth()+3)/3), //季度
        "S"  : this.getMilliseconds()             //毫秒
    };
    if(/(y+)/.test(fmt))
        fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
    for(var k in o)
        if(new RegExp("("+ k +")").test(fmt))
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
    return fmt;
}
/**
 * 将日期字符串转为long类型，字符串类型：yyyy-mm-dd hh:mm:ss
 * @param dateStr
 * @returns {number}
 */
function getLongFromatDateStr(dateStr){
    return new Date(dateStr.replace(new RegExp("-","gm"),"/")).getTime()
}

/**
 *转换日期对象为日期字符串
 * @param date 日期对象
 * @param isFull 是否为完整的日期数据,
 *               为true时, 格式如"2000-03-05 01:05:04"
 *               为false时, 格式如 "2000-03-05"
 * @return 符合要求的日期字符串
 */
function getSmpFormatDate(date, isFull) {
    var pattern = "";
    if (isFull == true || isFull == undefined) {
        pattern = "yyyy-MM-dd hh:mm:ss";
    } else {
        pattern = "yyyy-MM-dd";
    }
    return getFormatDate(date, pattern);
}
/**
 *转换当前日期对象为日期字符串
 * @param date 日期对象
 * @param isFull 是否为完整的日期数据,
 *               为true时, 格式如"2000-03-05 01:05:04"
 *               为false时, 格式如 "2000-03-05"
 * @return 符合要求的日期字符串
 */

function getSmpFormatNowDate(isFull) {
    return getSmpFormatDate(new Date(), isFull);
}
/**
 *转换long值为日期字符串
 * @param l long值
 * @param isFull 是否为完整的日期数据,
 *               为true时, 格式如"2000-03-05 01:05:04"
 *               为false时, 格式如 "2000-03-05"
 * @return 符合要求的日期字符串
 */

function getSmpFormatDateByLong(l, isFull) {
    return getSmpFormatDate(new Date(l), isFull);
}
/**
 *转换long值为日期字符串
 * @param l long值
 * @param pattern 格式字符串,例如：yyyy-MM-dd hh:mm:ss
 * @return 符合要求的日期字符串
 */

function getFormatDateByLong(l, pattern) {
    return getFormatDate(new Date(l), pattern);
}
/**
 *转换日期对象为日期字符串
 * @param l long值
 * @param pattern 格式字符串,例如：yyyy-MM-dd hh:mm:ss
 * @return 符合要求的日期字符串
 */
function getFormatDate(date, pattern) {
    if (date == undefined) {
        date = new Date();
    }
    if (pattern == undefined) {
        pattern = "yyyy-MM-dd hh:mm:ss";
    }
    return date.format(pattern);
}
/**
 * 将数值四舍五入(保留2位小数)后格式化成金额形式
 *
 * @param num 数值(Number或者String)
 * @return 金额格式的字符串,如'1,234,567.45'
 * @type String
 */
function formatCurrency(num) {
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num))
		num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	if(cents<10)
		cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
		num = num.substring(0,num.length-(4*i+3))+','+
			num.substring(num.length-(4*i+3));
	return (((sign)?'':'-') + num + '.' + cents);
}

/**
 * 将数值四舍五入(保留1位小数)后格式化成金额形式
 *
 * @param num 数值(Number或者String)
 * @return 金额格式的字符串,如'1,234,567.4'
 * @type String
 */
function formatCurrencyTenThou(num) {
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num))
		num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*10+0.50000000001);
	cents = num%10;
	num = Math.floor(num/10).toString();
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
		num = num.substring(0,num.length-(4*i+3))+','+
			num.substring(num.length-(4*i+3));
	return (((sign)?'':'-') + num + '.' + cents);
}

function preferenceFormatter(value, row, index) {
	var nameString = "";
	if (value.length > 6) {
		nameString = value.substring(0,6) + '...';
	} else{
		nameString = value;
	}
	return [
		'<a href="#" data-toggle="tooltip" title='+ value +'>' + nameString +'</a>',
	].join('');
}

$.fn.serializeJsonObject = function() {
	var json = {};
	var form = this.serializeArray();
	$.each(form, function() {
		if (json[this.name]) {
			if (!json[this.name].push) {
				json[this.name] = [ json[this.name] ];
			}
			json[this.name].push( );
		} else {
			json[this.name] = this.value || '';
		}
	});
	return json;
}
